/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.uniminuto.park.controlador;

import co.uniminuto.park.clases.Estacionamiento;
import co.uniminuto.park.clases.Geolocalizacion;
import co.uniminuto.park.dao.consultarrEstacionamientoDao;
import co.uniminuto.park.dao.insertarEstacionamientoDao;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.primefaces.model.map.DefaultMapModel;
import org.primefaces.model.map.LatLng;
import org.primefaces.model.map.MapModel;
import org.primefaces.model.map.Marker;

/**
 *
 * @author Esteban Rozo
 */
@ManagedBean
@ViewScoped
public class Insert {

    private MapModel emptyModel;
    private String title;
    private double lat;
    private double lng;
    private Estacionamiento sitio;
    private insertarEstacionamientoDao daoIns;
    private EstacionamientosLista getElementoApplication() {
        FacesContext cont = FacesContext.getCurrentInstance();
        return cont.getApplication().evaluateExpressionGet(cont, "#{elementoApplication}", EstacionamientosLista.class);
    }

    public Insert() {
        emptyModel = new DefaultMapModel();
        sitio = new Estacionamiento();
        emptyModel= recuperarMarker();
    }

    public insertarEstacionamientoDao getDaoIns() {
        return daoIns;
    }

    public void setDaoIns(insertarEstacionamientoDao daoIns) {
        this.daoIns = daoIns;
    }

    public MapModel getEmptyModel() {
        return emptyModel;
    }

    public Estacionamiento getSitio() {
        return sitio;
    }

    public void setSitio(Estacionamiento sitio) {
        this.sitio = sitio;
    }

    public void addMessage(FacesMessage message) {
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public double getLat() {
        return lat;
    }

    public void setLat(double lat) {
        this.lat = lat;
    }

    public double getLng() {
        return lng;
    }

    public void setLng(double lng) {
        this.lng = lng;
    }

    public void addMarker(ActionEvent actionEvent) {

        Marker marker = new Marker(new LatLng(lat, lng), title);
        emptyModel.addOverlay(marker);
        //insertarSitio();
        Geolocalizacion gps = new Geolocalizacion();
        gps.setLatitud(lat);
        gps.setLongitud(lng);
        sitio.setNombre(title);
        sitio.setUbicacion(gps);
        sitio.setAsignado(false);
        insertarEstacionamientoDao i = new insertarEstacionamientoDao();
        i.insertarEst(sitio);
          getElementoApplication().addElementoLista(sitio);
        addMessage(new FacesMessage(FacesMessage.SEVERITY_INFO, "Marker Added", "Lat:" + lat + ", Lng:" + lng));

    }

    public MapModel recuperarMarker() {
        consultarrEstacionamientoDao c= new consultarrEstacionamientoDao();
        
        List<Estacionamiento> list;
        //EstacionamientosLista lis= new EstacionamientosLista();
        list= getElementoApplication().getElementoLista();
          MapModel mapaMarket= new DefaultMapModel();
        for(Estacionamiento sit: list){
            Marker temporal = new Marker(new LatLng(sit.getUbicacion().getLatitud(),sit.getUbicacion().getLongitud()), sit.getNombre());
           mapaMarket.addOverlay(temporal);  
        }
        
        return mapaMarket;
}
        
    
}
